<?php
    require_once PATH_CLASS."widget.class.php";

    $db       = getDb();
    $response = new AjaxResponse();
    $smarty   = commun::getSmarty();

    function needResponsable(AjaxResponse &$response,$andDie=true){
      $response
      ->addError("Il faut être responsable pour faire des choses de responsable...")
      ->setStatus(false);
      if($andDie){
        die($response->sendAsJson());
      }
    }
    
    $id=0;
    
    function canUpdateTeam(&$id,&$response,$andDie=true){
      $ret=true;
      $id = null;
      
      if($id==null && isset($_REQUEST['equipe_id'])){
        $id = $_REQUEST['equipe_id'];
      }
      
      if($id==null && isset($_REQUEST['team_name'])){
        $id = $_REQUEST['team_name'];
      }
      
      if($id!=null){
        if(!security::canUpdateTeam($id)) {
          if($andDie){ 
            needResponsable($response);
          }
          $ret=false;
        }
        
      } else {
        $ret=false;
        if($andDie){
          needResponsable($response);
        }
      }
      return $ret;
    }


    switch($_REQUEST['action']){
      case 'get'  :
        
        if(!isset($_REQUEST['sub'])) $_REQUEST['sub'] ='';
        
        switch($_REQUEST['sub']){
        case 'yearList' :
          $more = array2Obj($_REQUEST['more']);
          $ret = match::getRankingLayout($more->year, saison::CHAMPIONNAT);
          $pars = array(
            'year'                         =>  getSaison($more->year)
            ,'equipes'                     =>  getEquipesParSaison($more->year)
            ,'scores'.saison::CHAMPIONNAT  =>  match::getRankingLayout($more->year, saison::CHAMPIONNAT)
            ,'scores'.saison::JOUTELIBRE   =>  match::getRankingLayout($more->year, saison::JOUTELIBRE)
          );
          $response->addSuccess(getCapture("",'__partials/equipes/TeamByYear',$pars));
          $response->sendAsJson();
          break;
        default:
          
          canUpdateTeam($id,$response);

          $sub = $_REQUEST['sub'];

          switch($sub){
            case 'saisons':
              $sub.='_list';
              break;
            case 'coachs':
              $sub.='_list';
              break;
          }

          $pars = array('equipe_id'=>$id);
          $response->setMore(getCapture("equipe_$sub",'__admin__/partial/equipe_admin',$pars));
          $response->sendAsJson('text');
        }
        break;
      case 'update' :

        /*
         * En cas d'update il faut être responsable
         */

        canUpdateTeam($id,$response);

        $sub = $_REQUEST['sub'];
        switch($sub){
        case 'saisons':
          function saisonCallback($item,$idx,$saison_id){
            $tab  = explode('-',$item);
            $array = array(
               'saison_id'  => $saison_id  
              ,'equipe_id'  => $_POST['equipe_id']  
              ,'saison_type'=> $_POST['item']['add']['saison_type'][$idx]   
            );
            return $array;
          }
          $sql='';
          commun::gestionSousFiches($sql,'t_liens_es','es_lien_id','saisonCallback');

          break;
        case 'coachs':
          function coachCallback($item,$idx,$saison_id){
            $tab  = explode('-',$item);
            $array = array(
               'saison_id'  => $saison_id  
              ,'equipe_id'  => $_POST['equipe_id']  
              ,'membre_id'  => $item //$_POST['item']['add']['membre_id'][$idx]   
            );
            return $array;
          }
          $sql='';
          commun::gestionSousFiches($sql,'t_liens_ec','ec_lien_id','coachCallback');

            break;
        case 'jouteurs':

          $sql='';
         function jouteurCallback($item,$idx,$saison_id){
            $tab  = explode('-',$item);
            $array = array(
               'saison_id'  => $saison_id  
              ,'equipe_id'  => $_POST['equipe_id']  
              ,'membre_id'  => $item //$_POST['item']['add']['membre_id'][$idx]   
            );
            return $array;
          }
          $sql='';
          commun::gestionSousFiches($sql,'t_liens_mes','mes_lien_id','jouteurCallback');

          // Un nouveau
          if(isset($_POST['item']['add']['saison']) && isset($_POST['item']['add']['email'])){
            $vide       = false;
            $membre     = new membre(array());
            $saison_id  = $_POST['item']['add']['saison'][0];
            foreach(array('nom','prenom','email') as $champ){
              if(empty($_POST['item']['add'][$champ][0])){
                $vide=true;
                break;
              } else {
                $nom = "membre_$champ";
                $membre->$nom = $_POST['item']['add'][$champ][0];
              }
            }
            // Ok les champs sont renseignés
            if(!$vide){
              $membre_id = $membre->insert(membre::$CLASS_NAME);
              
              if($membre_id!=0){
                $membre = membre::getMembre($membre_id);
                $membre->welcomeMembre();

                $sqlI=sprintf('INSERT INTO `t_liens_mes` (membre_id,saison_id,equipe_id) values(%d,%d,%d)',$membre_id,$saison_id,$_POST['equipe_id']);
                $ret = $db->Insert($sqlI);
              }
            }
          }
          
          $db->Update($sql);
          break;
        case 'infos':
          $equipe = equipe::getEquipe($id);
          $fileName = $equipe->equipe_photo;
          if(image::analyseUploadedImage('equipe_photo','equipe',$response)){
            if(image::replaceUploadedImage('equipe','equipe_photo',$id,$fileName,true)==true){
              $_POST['equipe']['equipe_photo'] = $fileName;
              $equipe->equipe_photo=''; // Pour provoquer la mise à jour au moins sur ce champ
            }
          }

          unset($_POST['equipe']['equipe_id']);
          commun::convertHTML($_POST['equipe']);          
          
          $sql=$db->UpdateSQL('t_equipes',$_POST['equipe'],'equipe_id='.$id);;
          try{
            if($db->Update($sql)>0){
              if($db->Count==1){
                $response->addSuccess("Mise à jour effectuée");
              } else {
                $response->addSuccess("Rien a mettre à jour, rien mis à jour");
              }
            }
          } catch(Exception $e){
            $response->addError($e);
          }
          break;
        case 'nouveaux':
          $sub .= '_list';

            foreach($_POST['item']['add']['membre_nom'] as $key=>$nom){
                $item=$_POST['item']['add'];

                $prenom = $item['membre_prenom'][$key];
                $mail = $item['membre_mail'][$key];
                $pwd = $item['membre_password'][$key];

                $login = trim(ucfirst($nom).'_'.ucfirst($prenom));

                if(empty($pwd)){
                  $pwd = getNewPwd();
                }

                $sql='INSERT INTO t_membres (membre_nom,membre_prenom,membre_email,membre_md5,membre_login,membre_crdh,membre_cr)';
                $sql.=' values("'.$nom.'","'.$prenom.'","'.$mail.'"';
                $sql.=','.getPwdMd5($pwd).'","'.$login.'",UNIX_TIMESTAMP(),'.$_SESSION['user_id'].');';

                $db->Insert($sql);

                $m_id = $db->lastId;

                if($m_id){
                    $response->addSuccess("Création de $login ($m_id) effectuée avec succés");
                    $saison_id=$saison_courante['saison_id'];

                    if(isActiveForSeason($id)){
                      $sql='INSERT INTO t_liens_mes (saison_id,equipe_id,membre_id) ';
                      $sql.='VALUES("'.$saison_id.'","'.$id.'","'.$m_id.'");';

                      $db->Insert($sql);
                    }

                    if(!empty($mail)){
                        $user= membre::getMembreById($m_id);
                        $user->membre_pwd=$pwd;
                        envoyerMail($mail,$user);
                    }
                } else {
                  $response->addError("Impossible de créer l'utilisateur $login, ajoutez un caractère ou inversez le nom et le prénom");
                }
            }

            break;

          break;
        default :
          $response->addError('Sub inconnu');
        }
        
        $equipe = equipe::getEquipe($id);
        
        $equipe->equipe_histo = preg_replace("/\n/","¤", $equipe->equipe_histo);

        $pars = array('equipe_id'=>$id,'equipe'=>$equipe);
        
        if($response->getStatus()==null){
          $response->addSuccess("Mise à jour effectuée avec succés");
        }
        
        $capture = getCapture("equipe_$sub",'widgets/team_admin',$pars);
        $response->setMore($capture);
        $response->sendAsJson();
      break;
    case 'show':
        if((!isset($_REQUEST['show_admin']) || $_REQUEST['show_admin']!='true') || !canUpdateTeam($id,$response,false)){
          $ret = widget::render('team',array('name'=>$_REQUEST['team_name'],'more'=>$_REQUEST));
        } else {
          $ret = widget::render('team_admin',array('name'=>$_REQUEST['team_name'],'more'=>$_REQUEST));
        }
        echo $ret;
        break;

    }

?>
